home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / apps / database / ingres04.lzh / source / ctlmod / pb_write.c < prev    next >
Encoding:
C/C++ Source or Header  |  1985-01-23  |  1.3 KB  |  73 lines

  1. # include    "ctlmod.h"
  2. # include    "pipes.h"
  3. # include    <sccs.h>
  4.  
  5. SCCSID(@(#)pb_write.c    8.1    12/31/84)
  6.  
  7. /*
  8. **  PB_WRITE -- Write pipe block
  9. **
  10. **    Writes the block specified by ppb to the pipe implied by
  11. **    ppb->pb_proc.  Also handles broadcase messages.
  12. **
  13. **    Parameters:
  14. **        ppb -- a ptr to the pipe block to write.
  15. **
  16. **    Returns:
  17. **        none
  18. **
  19. **    Side Effects:
  20. **        none
  21. **
  22. **    Trace Flags:
  23. **        12.10 - 12.15
  24. */
  25.  
  26. pb_write(ppb)
  27. register pb_t    *ppb;
  28. {
  29.     register int    i;
  30.  
  31. # ifdef xCTR1
  32.     if (tTf(12, 10))
  33.     {
  34.         lprintf("pb_write: ");
  35.         pb_dump(ppb, TRUE);
  36.     }
  37. # endif
  38.  
  39.     /* handle broadcast messages */
  40.     if (ppb->pb_proc == PB_WILD)
  41.     {
  42.         /* write on all pipes marked as a broadcast pipe */
  43.         for (i = 0; i < CM_MAXPROC; i++)
  44.         {
  45.             if ((Cm.cm_proc[i].pr_stat & PR_BCAST) != 0)
  46.                 pb_wphys(ppb, Cm.cm_proc[i].pr_file);
  47.         }
  48.     }
  49.     else
  50.     {
  51.         /* normal message */
  52.         i = ppb->pb_proc;
  53. # ifdef xCM_DEBUG
  54.         if (i > CM_MAXPROC || i < 0)
  55.             syserr("pb_write: proc %d", i);
  56. # endif
  57. # ifdef xCTR1
  58.         if (tTf(12, 11))
  59.             printf("pb_write: proc %d fd=%d\n", i, Cm.cm_proc[i].pr_file);
  60. # endif
  61.         pb_wphys(ppb, Cm.cm_proc[i].pr_file);
  62.     }
  63.  
  64.     /* determine the new input */
  65.     if ((ppb->pb_stat & (PB_INFO|PB_EOF)) == PB_EOF)
  66.         Cm.cm_input = Cm.cm_proc[ppb->pb_proc].pr_ninput;
  67.  
  68.     /* reset some exciting pointers */
  69.     ppb->pb_xptr = ppb->pb_data;
  70.     ppb->pb_nleft = PB_DBSIZE;
  71.     ppb->pb_nused = 0;
  72. }
  73.